﻿using UnityEngine;
using System.Collections;

namespace IMIForUnity
{
    public interface IGestureManager
    {
        /// <summary>
        /// 添加姿势到所有玩家
        /// </summary>
        /// <param name="gesture">姿势类别</param>
        /// <param name="listener">姿势事件触发回调</param>
        void AddGesture(System.Type gesture, ImiGesture.OnGestureEvent listener);

        /// <summary>
        /// 添加姿势到主控玩家
        /// </summary>
        /// <param name="gesture">姿势类别</param>
        /// <param name="listener">姿势事件触发回调</param>
        void AddGestureToMainPlayer(System.Type gesture, ImiGesture.OnGestureEvent listener);

        /// <summary>
        /// 添加姿势到所有副控玩家
        /// </summary>
        /// <param name="gesture">姿势类别</param>
        /// <param name="listener">姿势事件触发回调</param>
        void AddGestureToSubPlayer(System.Type gesture, ImiGesture.OnGestureEvent listener);

        /// <summary>
        /// 添加Native姿势到所有玩家
        /// </summary>
        /// <param name="gestureType">姿势类别</param>
        /// <param name="listener">姿势事件触发回调</param>
        void AddGesturePro(ImiGesturePro.GestureType gestureType, ImiGesture.OnGestureEvent listener);

        /// <summary>
        /// 添加Native姿势到主控玩家
        /// </summary>
        /// <param name="gestureType">姿势类别</param>
        /// <param name="listener">姿势事件触发回调</param>
        void AddGestureToMainPlayerPro(ImiGesturePro.GestureType gestureType, ImiGesture.OnGestureEvent listener);

        /// <summary>
        /// 添加姿势到副控玩家
        /// </summary>
        /// <param name="gestureType">姿势类别</param>
        /// <param name="listener">姿势事件触发回调</param>
        void AddGestureToSubPlayerPro(ImiGesturePro.GestureType gestureType, ImiGesture.OnGestureEvent listener);

        /// <summary>
        /// 从所有玩家身上移除姿势
        /// </summary>
        /// <param name="gesture">姿势类别</param>
        void RemoveGesture(System.Type gesture);

        /// <summary>
        /// 从主控玩家身上移除姿势
        /// </summary>
        /// <param name="gesture">姿势类别</param>
        void RemoveMainPlayerGesture(System.Type gesture);

        /// <summary>
        /// 从副控玩家身上移除姿势
        /// </summary>
        /// <param name="gesture">姿势类别</param>
        void RemoveSubPlayerGesture(System.Type gesture);

        /// <summary>
        /// 从所有玩家身上移除Pro姿势
        /// </summary>
        /// <param name="gestureType">姿势类别</param>
        void RemoveGesturePro(ImiGesturePro.GestureType gestureType);

        /// <summary>
        /// 从主控玩家身上移除Pro姿势
        /// </summary>
        /// <param name="gestureType">姿势类别</param>
        void RemoveMainPlayerGesturePro(ImiGesturePro.GestureType gestureType);

        /// <summary>
        /// 从副控玩家身上移除Pro姿势
        /// </summary>
        /// <param name="gestureType">姿势类别</param>
        void RemoveSubPlayerGesturePro(ImiGesturePro.GestureType gestureType);
    }
}

